/**
*	地图控件的接口 
*/
package com.imax.emap
{
	import com.imax.emap.core.Bounds;
	import com.imax.emap.core.LatLon;
	import com.imax.emap.core.LatLonBounds;
	import com.imax.emap.overlay.Marker;
	
	import flash.geom.Point;
	
	public interface IMap
	{
		/**
		 * 
		 * @param p 通过地图上的某个点的像素计算出所对应的经纬度
		 * @return 经纬度
		 * 
		 */		
		function fromPixelToLatLon(p:Point,_zoom:Number = -1):LatLon;
		/**
		 * 
		 * @param latLon 通过经纬度计算出其在地图上对应的像素
		 * @return 点Point
		 * 
		 */		
		function fromLatLonToPixel(latLon:LatLon,_zoom:Number = -1):Point;
		
		/**
		 * 
		 * @return 返回地图注册了的地图种类列表
		 * 
		 */		
		function getMapTypes():Array;
		
		/**
		 * 
		 * @return 返回当前地图所用的地图种类
		 * 
		 */	
		function getCurrentMapType():String;
		
		/**
		 * 
		 * @param type 添加地图种类
		 * 
		 */		
		function addMapType(type:String):void;
		
		/**
		 * 
		 * @param type 删除某个地图种类
		 * 
		 */		
		function removeMapType(type:String):void;
		
		
		
		/**
		 * 
		 * @return 返回电子地图的可视范围，以像素表示 
		 * 
		 */		
		function getPixelBounds():Bounds;
		
		/**
		 * 
		 * @return 返回电子地图的可视范围，以经纬度表示 
		 * 
		 */	
		function getLatLonBounds():LatLonBounds;
		
		/**
		 * 
		 * @return 返回电子地图中心点的经纬坐标
		 * 
		 */		
		function getCenter():LatLon;
		
		/**
		 * 设定地图的中心点，就像googleMap里面的用法一样
		 * @param centerLatLon 地图的中心点
		 * @param zoom 中心点的缩放等级,等级范围由地图提供方决定
		 * 
		 */		
		function setCenter(centerLatLon:LatLon, zoom:int):void;
		
		
		
		/**
		 * 保存地图当前位置的信息
		 * 
		 */		
		function savePosition():void;
		
		/**
		 * 返回地图上次保存的位置
		 * 
		 */	
		function returnToSavedPosition():void;
		
		//public function checkResize():void;
		
		/**
		 * 
		 * @param marker 向地图添加标注
		 * @see com.imax.emap.overlay.Marker
		 * 
		 */			
		function addMarker(marker:Marker):void;
		
		/**
		 * 
		 * @param marker 在地图中删除特定标注
		 * @see com.imax.emap.overlay.Marker
		 * 
		 */		
		function removeMarker(marker:Marker):void;
		
		/**
		 * 删除地图的所有标注 
		 * 
		 */		
		function clearMarkers():void;
		
		/**
		 * 取得地图所有的标注 
		 * 
		 */		
		function getMarkers():Array;
		
		/**
		 * 设定地图的高宽
		 * @param 地图宽度
		 * @param 地图高度
		 * 
		 */		
		function setSize(mapWidth:Number,mapHeight:Number):void;
	}
}